package com.entmanage.base.oa.service;

import java.util.List;

import com.entmanage.base.oa.domain.OaLeaveApply;
import com.entmanage.base.oa.domain.OaReissueApply;

/**
 * 补卡申请Service接口
 * 
 * @author lsq
 * @date 2025-09-19
 */
public interface IOaReissueApplyService 
{
    /**
     * 查询补卡申请
     * 
     * @param applyId 补卡申请主键
     * @return 补卡申请
     */
    public OaReissueApply selectOaReissueApplyByApplyId(Long applyId);

    /**
     * 查询补卡申请列表
     * 
     * @param oaReissueApply 补卡申请
     * @return 补卡申请集合
     */
    public List<OaReissueApply> selectOaReissueApplyList(OaReissueApply oaReissueApply);

    /**
     * 新增补卡申请
     * 
     * @param oaReissueApply 补卡申请
     * @return 结果
     */
    public int insertOaReissueApply(OaReissueApply oaReissueApply);

    /**
     * 修改补卡申请
     * 
     * @param oaReissueApply 补卡申请
     * @return 结果
     */
    public int updateOaReissueApply(OaReissueApply oaReissueApply);

    /**
     * 批量删除补卡申请
     * 
     * @param applyIds 需要删除的补卡申请主键集合
     * @return 结果
     */
    public int deleteOaReissueApplyByApplyIds(Long[] applyIds);

    /**
     * 删除补卡申请信息
     * 
     * @param applyId 补卡申请主键
     * @return 结果
     */
    public int deleteOaReissueApplyByApplyId(Long applyId);

    void sendReissueApprovalEmail(
            List<Long> approverIds,
            List<Long> ccIds,
            String reissueTimes,
            String reissueReasons,
            String applicantName
    );

    List<OaReissueApply> selectByApproverId(Long approverId);

    List<OaReissueApply> selectByCcId(Long currentUserId);
}
